为了使用access token,你需要一个资源服务器(可以跟授权服务器是同一个)。创建资源服务器很简单,只需要添加@EnableResourceServer
,提供一些配置以允许服务器解码access token。如果应用也是授权服务器,由于它知道如何去解码tokens,所以也就不需要做其他事情。如果你的app是独立的服务,那你就需要给它添加以下可选配置中的某一项:
security.oauth2.resource.user-info-uri
用于/me
资源(例如,PWS的https://uaa.run.pivotal.io/userinfo
)。security.oauth2.resource.token-info-uri
用于token解码端点(例如,PWS的https://uaa.run.pivotal.io/check_token
)。如果user-info-uri
和token-info-uri
都指定了,你可以设置flag筛选出最想要的那个(默认prefer-token-info=true
)。
另外,如果token是JWTs,你可以配置security.oauth2.resource.jwt.key-value
解码它们(key是验签的key)。验签的键值可以是一个对称密钥,也可以是PEM编码的RSA公钥。如果你没有key,并且它是公开的,你可以通过security.oauth2.resource.jwt.key-uri
提供一个下载URI(有一个"value"字段的JSON对象),例如,在PWS平台上:
$ curl https://uaa.run.pivotal.io/token_key
{"alg":"SHA256withRSA","value":"-----BEGIN PUBLIC KEY-----\nMIIBI...\n-----END PUBLIC KEY-----\n"}
注 如果你使用security.oauth2.resource.jwt.key-uri
,授权服务器需要在应用启动时也运行起来,如果找不到key,它将输出warning,并告诉你如何解决。